<?php

class Work_PessoaController extends My_Work_Controller {

	public static $_cdpessoa = 0;
	private static $_uriIndex;
	private static $_uriInsert;
	private static $_uriUpdate;

	protected function initAdmin() {
		self::$_cdpessoa = (int) $this->getRequest()->getParam('cdpessoa', 0);
	}

	public function editAction() {
		$grupoModel = new Model_DbTable_Tbgrupo();

		if (self::$_cdpessoa > 0) {
			$grupoRs = $grupoModel->find(self::$_cdpessoa);
			if ($grupoRs->count() == 0) {
				ZFKiller_Msg::addMsg('Registro inexistente.', ZFKiller_Msg::MSG_WARN);
				$this->_helper->Redirector->gotoUrl(self::getUriIndex());
				exit;
			}
			Work_Form_Grupo::setTypeForm('edit');
			$grupoArr = $grupoRs->current()->toArray();
		} else {
			$grupoArr = array(
				'cdpessoa' => 0,
			);
		}

		$form = new Work_Form_Grupo();
		if ($this->getRequest()->isPost()) {
			$form->populate($this->getRequest()->getParams());
			if ($form->isValid($this->getRequest()->getParams())) {
				$grupoArrDb = $form->getValues(ZFKiller_Form::GET_VALUE_TYPE_DB);

				if (self::$_cdpessoa > 0) {
					$upd = $grupoModel->moduleWork_update($grupoArrDb);
				} else {
					unset($grupoArrDb['cdpessoa']);
					$grupoArrDb['cdpessoa'] = $grupoModel->moduleWork_insert($grupoArrDb);
				}

				$errors = $grupoModel->getErrorsMessages($grupoArrDb);
				if (count($errors) == 0) {
					ZFKiller_Msg::addMsg('Registro atualizado com sucesso.');
					$this->_helper->Redirector->gotoUrl(strtr(self::getUriUpdate(), array('{{cdpessoa}}' => $grupoArrDb['cdpessoa'])));
					exit;
				} else {
					/*foreach ($errors as $errorCode=>$errorMessage) {
						switch ($errorCode) {
							case Model_DbTable_TbAdmin::ERROR_EMAIL_ALREADY_EXISTS:
								$form->getElement('stEmail')->addError($errorMessage);
								break;
						}
					}*/
				}
			}
			$form->populate($form->getValues());
		} else {
			$form->populate($grupoArr);
			if (self::$_cdpessoa > 0) {
				$form->getElement('emailCaptura')->setValue(strtr(EMAIL_BACKUP_FORMAT, array(
					'[stSequencia]' => $grupoArr['stSequencia']
				)));
			}
		}

		$box = new ZFWork_Boxes_Box('Grupos', 'boxGrupos');
		$box->addForm($form);

		$this->view->boxes = array($box);
		$this->render('padrao/editMultiplosBoxes', null, true);
	}

	public function indexAction() {
		$grid = $this->getGrid('Pessoas', array(), 'grid');

		$grid->setSource(new Bvb_Grid_Source_Zend_Table(new Model_DbTable_Tbpessoa()));
		$grid->setColumnsHidden(array('cdpessoa'));

		$grid->updateColumn('stnome', array(
			'decorator' => '<a href="' . self::getUriUpdate() . '">{{stnome}}</a>',
			'title' => 'Nome',
		));
		$grid->updateColumn('stemail', array(
			'title' => 'Email',
		));

		$btColumn = new ZFWork_Grid_Extra_Btcolumn($grid, array(
					'bt' => array(
						'editar' => array(
							'url' => self::getUriUpdate(),
							'type' => 'edit-imglink',
						),
					),
				));
		$grid->addExtraColumns($btColumn);

		$grid->setGridColumns(array('stnome', 'stemail', 'btButtonEdit'));

		$this->view->grid = $grid->deploy();

		$this->render('padrao/grid', null, true);
	}

	public static function getUriIndex() {
		if (empty(self::$_uriIndex))
			self::$_uriIndex = ZFKiller_View_Helper_Url::urlStatic(array('controller' => 'grupo', 'action' => 'index'), null, true, false);

		return self::$_uriIndex;
	}

	public static function getUriInsert() {
		if (empty(self::$_uriInsert))
			self::$_uriInsert = ZFKiller_View_Helper_Url::urlStatic(array('action' => 'edit'), null, true, false);

		return self::$_uriInsert;
	}

	public static function getUriUpdate() {
		if (empty(self::$_uriUpdate))
			self::$_uriUpdate = ZFKiller_View_Helper_Url::urlStatic(array('action' => 'edit', 'cdpessoa' => '{{cdpessoa}}'), null, true, false);

		return self::$_uriUpdate;
	}

}